二叉搜索树与双向链表
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
- 转换结点,并将pLast指针朝中序遍历(即排序方向)移动。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27function Convert(pRootOfTree)
{
// write code here
if(pRootOfTree===null)return null;
let pLast=null;
pLast=ConvertNode(pRootOfTree,pLast);
let pHead=pLast;
while(pHead&&pHead.left){
pHead=pHead.left;
}
return pHead;
}
function ConvertNode(pNode,pLast){
if(pNode===null)return ;
if(pNode.left){
pLast=ConvertNode(pNode.left,pLast);
}
pNode.left=pLast;
if(pLast){
pLast.right=pNode;
}
pLast=pNode;
if(pNode.right){
pLast=ConvertNode(pNode.right,pLast);
}
return pLast;
}